package com.graduation.springbootinit.model.entity.ShopPart;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Data
@TableName("shop_part_product_comments")
public class ProductComment {
    private static final ObjectMapper objectMapper = new ObjectMapper();
    
    /**
     * 评论ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    
    /**
     * 商品ID
     */
    private Long productId;
    
    /**
     * 用户ID
     */
    private Long userId;
    
    /**
     * 用户名称
     */
    private String userName;
    
    /**
     * 用户头像URL
     */
    private String userAvatar;
    
    /**
     * 评论内容
     */
    private String content;
    
    /**
     * 评分(1-5星)
     */
    private Integer rating;
    
    /**
     * 父评论ID，用于多级评论
     */
    private Long parentId;
    
    /**
     * 点赞数
     */
    private Integer likeCount;
    
    /**
     * 评论图片列表，JSON数组格式，每个元素为图片URL，最多支持9张图片
     */
    private String images;
    
    /**
     * 图片URL列表
     */
    @TableField(exist = false)
    private List<String> imageList;

    /**
     * 获取图片URL列表
     */
    public List<String> getImageList() {
        if (images == null || images.isEmpty()) {
            return new ArrayList<>();
        }
        try {
            return objectMapper.readValue(images, new TypeReference<List<String>>() {});
        } catch (JsonProcessingException e) {
            return new ArrayList<>();
        }
    }

    /**
     * 设置图片URL列表
     */
    public void setImageList(List<String> imageList) {
        try {
            this.images = objectMapper.writeValueAsString(imageList);
        } catch (JsonProcessingException e) {
            this.images = "[]";
        }
    }
    
    /**
     * 创建时间
     */
    private LocalDateTime createdAt;
    
    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
}